package com.hhwy.framework.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;

/**
 * 创建日期:2015年3月17日
 * Title:解压缩zip文件
 * Description：对本文件的详细描述，原则上不能少于50字
 * @author liuh
 * @mender：（文件的修改者，文件创建者之外的人）
 * @version 1.0
 * Remark：认为有必要的其他信息
 */
public class Unzip {

	/**
	 * 功能:解压缩
	 * 作者: liuh
	 * 创建日期:2015年3月17日
	 * 修改者: mender
	 * 修改日期: modifydate
	 * @param sZipPathFile 要解压的文件
	 * @param sDestPath 解压到某文件夹
	 * @return
	 */
	public static ArrayList<String> Ectract(String sZipPathFile, String sDestPath) {
		ArrayList<String> allFileName = new ArrayList<String>();
		org.apache.tools.zip.ZipFile zipFile = null;
		try {
			zipFile = new org.apache.tools.zip.ZipFile(sZipPathFile);
			java.util.Enumeration<org.apache.tools.zip.ZipEntry> e = zipFile.getEntries();
			org.apache.tools.zip.ZipEntry zipEntry = null;
			byte[] ch = new byte[512];
			while (e.hasMoreElements()) {
				zipEntry = e.nextElement();
				File zfile = new File(sDestPath + "/" + zipEntry.getName());
				File fpath = new File(zfile.getParentFile().getPath());
				if (zipEntry.isDirectory()) {
					if (!zfile.exists()){
						zfile.mkdirs();
					}
				} else {
					if (!fpath.exists()){
						fpath.mkdirs();
					}
					InputStream in = zipFile.getInputStream(zipEntry);
					FileOutputStream fouts = new FileOutputStream(zfile);
					int i;
					allFileName.add(zfile.getAbsolutePath());
					while ((i = in.read(ch)) != -1){
						fouts.write(ch, 0, i);
					}
					fouts.close();
					in.close();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(zipFile != null)
				try {
					zipFile.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
		return allFileName;
	}
	
	public static void main(String[] args) {
		ArrayList<String> a = Unzip.Ectract("F:/test/neima-plugin.zip", "F:/test/neima-plugin"); // 返回解压缩出来的文件列表
		for(String s : a){
			System.out.println(s);
		}
//		Unzip.unZip("F:/test/neima-plugin.zip", "F:/test/neima-plugin"); // 返回解压缩出来的文件列表
	}
}